﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

using modInterface;
using modDatos;

namespace modUtileria
{
    public static class SCutileria
    {
            //mis disccionario de recursos
            private static Dictionary<string, Texture2D> texturas2D = new Dictionary<string, Texture2D> ( );
            private static Dictionary<string, Song> sonido = new Dictionary<string, Song> ( );
            private static Dictionary<string, SpriteFont> fuente = new Dictionary<string, SpriteFont>();

            public static ContentManager folder;

            //suministra recursos existentes, caso contrario los busca y agrega
            public static bool suministratrUtileria ( Iutileria receptor, string tipo, string nombre )
            {
                try
                {
                    switch (tipo)
                    {
                        case "textura2D":
                            if (!texturas2D.ContainsKey ( nombre ))
                            {
                                buscarUtileria ( nombre, "textura2D" );
                            }
                            receptor.recibirUtileria ( texturas2D[nombre] );
                            break;

                        case "sonido":
                            if (!sonido.ContainsKey ( nombre ))
                            {
                                buscarUtileria ( nombre, "sonido" );
                            }
                            receptor.recibirUtileria ( sonido[nombre] );
                            break;
                    }

                }
                catch(Exception e)
                {
                    MessageBox.Show ( e.Message );
                    return false;
                }
                return true;
            }

            public static Texture2D darTextura2D(string name)
            {
                if (!texturas2D.ContainsKey(name))
                {
                    buscarUtileria(name, "textura2D");
                }
                return texturas2D[name];
            }

            public static SpriteFont darFuente(string name)
            {
                if (!fuente.ContainsKey(name))
                {
                    buscarUtileria(name, "fuente");
                }
                return fuente[name];
            }
            
            //agrega recurso
            public static bool buscarUtileria ( string nombre, string tipo )
            {
                try
                {
                    switch (tipo)
                    {
                        case "textura2D":
                            texturas2D.Add ( nombre, folder.Load<Texture2D> ( nombre ) );
                            break;

                        case "fuente":
                            fuente.Add(nombre, folder.Load<SpriteFont> (nombre));
                            break;
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show ( e.Message );
                    return false;
                }
                return true;
            }

            //elimina recurso
            private static bool quemarUtileria ( )
            {
                try
                {

                }
                catch (Exception e)
                {
                    MessageBox.Show ( e.Message );
                    return false;
                }
                return true;
            }
        }
    
}
